/**
 * 
 */
package co.edu.uniquindio.pruebas;

import java.util.List;

import javax.naming.NamingException;

import org.junit.Assert;
import org.junit.Test;

import co.edu.uniquindio.dao.MarcaDao;
import co.edu.uniquindio.dao.ModeloDao;
import co.edu.uniquindio.logica.Marca;
import co.edu.uniquindio.logica.Modelo;


/**
 * 
 * Prueba implementation class for: PruebaModelo
 * El proposito de esta clase es el probar  la
 * DAO relacionada con la informacion de un modelo.
 * @author Andres Felipe Abril 
 * @author Luis Enrique Robledo
 *
 */
public class PruebaModelo extends PruebaMagnum
{

	private static Marca marca;
	
	public PruebaModelo() throws NamingException {
		super();
		// TODO Auto-generated constructor stub
	}
	@Test
	public void testCrudModelo() throws NamingException 
	{
		MarcaDao marcaDao=(MarcaDao)contenedor.getContext().lookup("java:global/Subasta/MarcaDao");
		modeloDao=(ModeloDao)contenedor.getContext().lookup("java:global/Subasta/ModeloDao");

		marca=new Marca("mitsubiche","los mejores autos");
		//marcaDao.insert(marca);
		
		Modelo modelo=new Modelo(marca, "r6", "perfecto estado");
		
		//prueba de insercion
		//modeloDao.insert(modelo);
    	//Assert.assertEquals("r6", modelo.getNombre());
    //	
    	//Prueba de búsqueda
    	
    	Modelo modeloRecuperado=modeloDao.findByKey(modelo.getNombre());
    	Assert.assertEquals(modeloRecuperado.getNombre(),modelo.getNombre());
    	
    	//Prueba actualización
    	modeloRecuperado.setNombre("r9");
    	modeloRecuperado.setDescripcion("con un rayon");
    	modeloDao.update(modeloRecuperado);
    	modelo= modeloDao.findByKey( modeloRecuperado.getNombre());
    	Assert.assertEquals("r9",modelo.getNombre());
    	
    	
    	//Prueba getAll
    	Modelo otroModelo= new Modelo();
    	otroModelo.setNombre("r12");
    	otroModelo.setMarca(marca);
    	otroModelo.setDescripcion("perfectas condiciones");
    	//modeloDao.insert(otroModelo);
    	//List<Modelo>modelos=modeloDao.getAll();
    	//Assert.assertTrue(modelos.contains(otroModelo));
        //Assert.assertTrue(modelos.contains(modelo));    	
    	
    	//Prueba Delete
//        modeloDao.remove(modelo);
//        modeloDao.remove(otroModelo);
//        modelos=modeloDao.getAll();
//        Assert.assertTrue(!modelos.contains(otroModelo));
//        Assert.assertTrue(!modelos.contains(modelo));    	
//    	
        
        
    	
	}
	@Test
    public void pruebaModelosPorMarca()
    {
    	
    	List<Modelo>lista = modeloDao.modelosPorMarca(marca);
    	Assert.assertEquals(lista.size(), 2);
    	
    }
}
